A common application today is the entering, editing and manipulation of text. Application programs that perform such text operation include word processors, text editors, and even spreadsheets and presentation programs. For example, a word processor allows a user to enter text to prepare documents such as letters, reports, memos, etc. Other application programs include e-mail application programs, web browser application programs, etc.
While the keyboard has historically been the standard input device by which text input is performed into these type of application programs, it is currently being augmented and/or replaced by other types of input devices. For example, touch-sensitive pads can be “written” on with a stylus, such that a handwriting recognition program can be used to input the resulting characters into a program. As another example, voice-recognition programs, which work in conjunction with microphones attached to computers, also are becoming more popular. Especially for non-English language users, these non-keyboard type devices are popular for initially inputting text into programs, such that they can then be edited by the same device, or other devices like the keyboard.
A difficulty with the use of such input devices to input text into such programs is that there is no common mechanism by which to manage the text that these devices produce. Input device manufacturers, for example, develop drivers for the devices that output text in different ways, and thus interface with application programs in different ways. Application programs as well receive text input in different manners. Furthermore, within the prior art, input device drivers are one-way: they can only inject text into a document, and not, for example, view the text already within the document, which prevents them to some extent from having better accuracy in the text that they generate.
For these and other reasons, therefore, there is a need for the present invention.